package com.qfjy.client;

import com.qfjy.client.impl.VideoInfoFeignFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 #### **@FeignClien**t
 用于通知Feign组件对该接口进行代理(不需要编写接口实现)，
 name属性 指定FeignClient名称。指定我们要调用哪个服务。name属性会作为微服务的名称，用于服务发现。使用者可直接通过@Autowired注入。
 path属性 定义当前FeignClient的统一前缀
 fallback属性定义容错的处理类，当调用远程接口失败或超时时，会调用对应接口的容错逻辑。fallback指定的类必须实现@FeignClient标记的接口
 */
@FeignClient(name = "qf-video",path = "videoInfo",fallback = VideoInfoFeignFallback.class)
public interface VideoInfoFeignClient {

    @GetMapping("select")
    @ResponseBody
    public String selectVideoInfoByPcode(@RequestParam("pcode") String pcode);


    /**

     * Ribbon+RestTemplate服务间通信
     * Spring Cloud中，当Ribbon与Nacos配合使用时，
     * Ribbon可自动从Nacos Server获取服务提供者地址列表，并基于负载均衡算法，请求其中一个服务提供者实例。
    String url="http://qf-video/videoInfo/select?pcode="+pcode;
    String result= restTemplate.getForObject(url,String.class);
     */


    @GetMapping("select1")
    @ResponseBody
    public String selectVideoInfoByPcode1(@RequestParam("pcode") String pcode);
}
